package level02.one;

import java.io.*;
import java.util.Scanner;

/**
 * 修改图书：根据图书编号查找图书，允许修改图书的除图书编号
 * 外的所有信息。修改完成后，将修改后的数据再次写入到
 * test_1.txt 中。
 */
public class Modify {
    public static void modify(File file) throws Exception {
        System.out.println("请输入需要修改图书的编号");
        Scanner scanner = new Scanner(System.in);
        String nextLine = scanner.nextLine();

        //首先是读取文件test_1.txt中的内容
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

        /*
        同时对同一个文件创建 BufferedReader（读）和 BufferedWriter（写）：
        new FileWriter(file) 会直接清空文件内容
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
        */

        //先用内存缓存所有内容
        StringBuilder stringBuilder = new StringBuilder();

        String line;

        //读取文件内容，用stringBuilder来保存在内存中
        while ((line = bufferedReader.readLine()) != null) {

            //将读取的内容分割
            String[] split = line.split(",");

            //判断读取的图书编号和输入编号是否符合
            if (split[0].equals(nextLine)) {
                System.out.println("编号为:" + nextLine + "的图书信息为:" + line);
                while (true) {
                    System.out.println("请问你要修改的图书内容（作者，出版社，出版日期，单价，数量）,推出修改(exit)");
                    String nextLine1 = scanner.nextLine().trim();
                    if (nextLine1.equals("exit")) {
                        break;
                    }
                    switch (nextLine1) {
                        case "图书编号":
                            System.out.println("<UNK>");
                            break;
                        case "作者":
                            System.out.print("需要修改作者为:");
                            String nextLine2 = scanner.nextLine().trim();

                            //将修改的内容替换到文件中
                            split[1] = nextLine2;
                            break;
                        case "出版社":
                            System.out.print("需要修改出版社为:");
                            String nextLine3 = scanner.nextLine().trim();

                            //将修改的内容替换到文件中
                            split[2] = nextLine3;
                            break;
                        case "出版日期":
                            System.out.print("需要修改出版日期为:");
                            String nextLine4 = scanner.nextLine().trim();

                            //将修改的内容替换到文件中
                            split[3] = nextLine4;
                            break;
                        case "单价":
                            System.out.print("需要修改单价为:");
                            String nextLine5 = scanner.nextLine().trim();

                            //将修改的内容替换到文件中
                            split[4] = nextLine5;
                            break;
                        case "数量":
                            System.out.print("需要修改数量为:");
                            String nextLine6 = scanner.nextLine().trim();

                            //将修改的内容替换到文件中
                            split[5] = nextLine6;
                            break;
                        default:
                            System.out.println("输入错误,请重新输入");
                            break;
                    }
                    System.out.println("修改成功！");
                }
                /*
                修改了一行中的内容，需要将拆开的内容重新拼接为一串字符串
                 将修改后的内容重新拼接成一行
                 */
                line = String.join(",", split);
            }
            // 将（可能修改过的）行添加到内存缓存
            stringBuilder.append(line).append("\n");

        }
        //关闭读取流
        bufferedReader.close();

        //将内存中创建的stringBuilder写入文件
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
        bufferedWriter.write(stringBuilder.toString());
        bufferedWriter.close();
        System.out.println("图书文件已更新");
    }
}
